/**
 * 
 * 广州锐鹏计算机科技有限公司（www.ruipengkj.com）
 * 
 * 
 * Copyright (c) 2011-2012 RUIPENGKJ.Co.Ltd. All rights reserved.
 * 
 * */
package com.ruipengkj.commons.util;

import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.filechooser.FileFilter;
/**
 * 说明：
 * 文件工具
 * @Author：李智深
 * @Date：2012-03-14
 */
public class FileUtil {

	/**
	 * 判断是否目录，或目录存不存在
	 * 
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean isDir(String path) {
		File file = new File(path);
		if (file.isDirectory()) {
			return true;
		} else {
			return false;
		}
	}

	/**
	 * 判读是否文件，或文件存不存在
	 * 
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean isFile(String path) {
		File file = new File(path);
		if (file.isFile()) {
			return true;
		} else {
			return false;
		}
	}

	// 文件不存在则创建
	public static boolean existFile(String path) {
		File file = new File(path);

		// 文件不存在
		if (!file.exists()) {
			try {
				file.createNewFile();
				return true; // 文件创建成功
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		// 文件创建成功
		return false;
	}

	// 判断是否存在图片
	public static boolean existImage(String path) {
		if (path == null || path.equals(""))
			return false;
		File file = new File(path);

		try {
			Image img = ImageIO.read(file);
			if (img == null)
				return false;
		} catch (IOException e) {
//			e.printStackTrace();
			return false;
		}
		// 文件创建成功
		return true;
	}
	
	// 判断是否存在图片
	public static BufferedImage existImage(File file) {
		if (file == null)
			return null;
		try {
			BufferedImage img = ImageIO.read(file);
			if (img != null)
				return img;
		} catch (IOException e) {
			return null;
		}
		return null;
	}
	
	/**
	 * 如果目录不存在创建目录
	 * 
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean creDir(String path) {
		File file = new File(path);

		if (file.mkdirs()) {
			return file.mkdirs();
		}
		return false;
	}

	/**
	 * 如果目录不存在创建目录
	 * 
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean creDir(File file) {
		if (!file.mkdirs()) {
			return file.mkdirs();
		}
		return false;
	}

	public static void main(String[] args) {
		String path = "C:/mail/serupabsc.txt";
		existFile(path);
		/*
		 * File file = new File(path); System.out.println(file.exists());
		 * System.out.println(!creDir(file));
		 */
	}

	/**
	 * 删除目录
	 * 
	 * @param path
	 * @return TRUE/FALSE
	 */
	public static boolean delDir(String path) {
		File file = new File(path);
		return file.delete();
	}

	public static void copyFile(File srcFile, File destFile){
		BufferedInputStream bufin = null;
		BufferedOutputStream bufout = null;
		if(destFile.getParentFile()!=null){
			destFile.getParentFile().mkdirs();
		}
		try {
			bufin=new BufferedInputStream(new FileInputStream(srcFile));
			bufout=new BufferedOutputStream(new FileOutputStream(destFile));
			byte[] buffer = new byte[102400];
			int bytesReaded =0;
			while ((bytesReaded = bufin.read(buffer, 0, buffer.length)) != -1) {
				bufout.write(buffer, 0, bytesReaded);
				bufout.flush();
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				bufin.close();
				bufout.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	
	//将文件转换为字节文件
	public static byte[] readFileByte(String filePath){
		File file=new File(filePath);
		FileInputStream fis=null;
		BufferedInputStream bis=null;
		byte[] bytes=null;
		if(file.exists()){
			try {
				fis = new FileInputStream(file);
				bis=new BufferedInputStream(fis);
				bytes=new byte[bis.available()];
				bis.read(bytes);
				bis.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}finally {
				try {
					bis.close();
					fis.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return bytes;
	}
	
	//文件过滤器
		public static FileFilter getFileFilter() {
			return new FileFilter() {
				@Override
				public boolean accept(File f) {
					String path = f.getName();
					if(path.endsWith(".jpg")||path.endsWith(".gif")||
						path.endsWith(".png")||path.endsWith(".bmp")||f.isDirectory()){
			          return true;
			        }
					return false;
				}
		
				@Override
				public String getDescription() {
					return "图片(*.jpg/.gif/.png/.bmp)";
				}	
			};
		}
}
